User-initiated workflow to collect media

ABSTRACT

The present technology pertains to remotely initiating a capture request. According to at least one example, the present technology includes sending the request for a media capture to a recipient device of a recipient user. The request for the media capture can be configured by the requesting user so that options are chosen for the recipient. The recipient user merely needs to click on a link to cause a web browser to initiate the screen capture. In some cases, the recipient user may need to accept some prompts from their computing device to give the browser permission to perform the capture.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. application Ser. No. 17/563,648filed on Dec. 28, 2021, entitled, USER-INITIATED WORKFLOW TO COLLECTMEDIA, which is hereby expressly incorporated herein by reference in itsentirety and for all purposes.

TECHNICAL FIELD

The present technology pertains to remotely configuring and initiating acapture request at a recipient user device.

BACKGROUND

In some environments, a remote user can communicate a request for ascreen capture or video recording from another user. For example, aremote user can be a customer service representative or technicalsupport professional communicating with another user needing technicalsupport with an application or service on their computing device. It iscommon for the customer service representative to request that the userprovide a video or screen capture that shows the issue or shows actionstaken by the user that led to the need for technical support. It canalso be common for a team leader or a teacher to request a screencapture or video from a team member or a student. Such requests can becomplicated when the user receiving the request is not proficient withtools for screen captures or video recordings.

SUMMARY

The present technology pertains to a remote capture service that canaccessed by a requesting service which can configure a capture requestto be provided to a client device of a recipient user. The request forthe media capture can be configured by the requesting user or therequesting service so that options are chosen for the recipient. Theclient device of the recipient user can receive a link, that whenselected, results in a webpage being loaded in a web browser on theclient device. The web page causes the computing device to initiate thecapture request using any options that were configured by the requestinguser. The recipient user merely needs to click on a link to cause a webbrowser to initiate the screen capture. In some cases, the recipientuser may need to accept some prompts from their computing device to givethe browser permission to perform the capture.

After the capture is completed, the recipient user device canautomatically send a capture object, including the media capture, to therequesting user or a designated service. The requesting user or thedesignated service can receive the media capture object. In someembodiments, the designated service can be a service for remotelyinitiating screen captures. In some embodiments, the designated servicecan be a content management system that can store and share the captureobject.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example of a content management system and clientdevices in accordance with some aspects of the present technology;

FIG. 2 illustrates an example system for creating a remote capturerequest and causing a client device to carry out the capture accordingto parameters configured as part of the capture request in accordancewith some aspects of the present technology;

FIG. 3 illustrates an example method for remotely initiating a capturerequest in accordance with some aspects of the present technology;

FIG. 4 illustrates an example method for configuring and initiating aremote capture request by a user interface available through therequesting service in accordance with some aspects of the presenttechnology;

FIG. 5 illustrates an example method for receiving a remotely initiatedcapture request and performing the capture on a recipient device inaccordance with some aspects of the present technology;

FIG. 6A illustrates an example of a request for the media capture inaccordance with some aspects of the present technology;

FIG. 6B illustrates an example of a user interface showing options thata recipient user can select in accordance with some aspects of thepresent technology;

FIG. 6C illustrates an example of a user interface showing a permissionrequest in accordance with some aspects of the present technology;

FIG. 6D illustrates an example of a user interface showing optionsregarding which window or screen to capture in accordance with someaspects of the present technology;

FIG. 6E illustrates an example of a user interface while the capture isongoing, and a button to stop the recording in accordance with someaspects of the present technology;

FIG. 6F illustrates an example of a user interface after the recordingis sent in accordance with some aspects of the present technology; and

FIG. 7 illustrates an example of computing system 700 in accordance withsome aspects of the present technology.

DETAILED DESCRIPTION

The present technology addresses a need in the art to provide a capturerequest to a recipient user that does not require an unskilled operatorof a computing device to need to identify an application to perform thecapture request, configure the correct options, save a file resultingfrom the capture request, and share the file with the sending user.Accordingly, there is a need for a solution that can allow a user toprovide a capture in response to a request with fewer steps.

The present technology pertains to a remote capture service that canaccessed by a requesting service which can configure a capture requestto be provided to a client device of a recipient user. The request forthe media capture can be configured by the requesting user or therequesting service so that options are chosen for the recipient. Theclient device of the recipient user can receive a link, that whenselected, results in a webpage being loaded in a web browser on theclient device. The web page causes the computing device to initiate thecapture request using any options that were configured by the requestinguser. The recipient user merely needs to click on a link to cause a webbrowser to initiate the screen capture. In some cases, the recipientuser may need to accept some prompts from their computing device to givethe browser permission to perform the capture.

In some environments, a remote user can interact with the remote captureservice to request a capture or from another user. For example, a remoteuser can be a customer service representative or technical supportprofessional communicating with another user needing technical supportwith an application or service on their computing device. It is commonfor the customer service representative to request a capture that showsthe issue or shows actions taken by the user that led to the need fortechnical support. It can also be common for a team leader or a teacherto request a capture from a team member or a student. Such requests canbe complicated when the user receiving the request is not proficientwith tools for screen captures or video recordings.

Accordingly, the present technology provides benefits such as making itmore efficient to initiate a capture by a user. It can be more efficientbecause an expert can remotely configure and initiate the screencapture. Furthermore, a remotely initiated capture can have additionalbenefits in certain environments. For example, in the Technical Supportenvironment, a screen capture received as a result of the remotelyconfigurated screen capture can be automatically associated with atechnical support ticket. In other words, many of these steps can beperformed automatically rather than a user needing to manually initiatea screen capture, save the screen capture, and then upload or send thescreen capture. Likewise, on the receiving user side, the technicalsupport service does not have to identify the screen capture as part ofa previous technical support ticket and can automatically resume atechnical support workflow once the capture object is received.

Similar benefits can be achieved in a team environment where a teamleader can request a screen capture via a communications platform, andthe remotely initiated screen capture can be automatically associatedwith a thread in the communications platform. This can be especiallybeneficial when a thread is curated around a particular project.

Likewise, similar benefits can be achieved in an education environmentwhere a teacher can request a screen capture from a plurality ofstudents, and the resulting screen captures can be automaticallyassociated with student profiles for the teacher to review.

Furthermore, since the screen capture can be remotely configured,various options can be configured prior to receiving the screen capturerequest by a recipient user. This can ensure that the screen capturethat is eventually received meets the necessary requirements for thecontext of the screen capture request.

These and other advantages will become more apparent throughout thefollowing description.

In some embodiments, the disclosed technology is deployed in the contextof a content management system having object synchronizationcapabilities and collaboration features, among others. An example systemconfiguration 100 is shown in FIG. 1 , which depicts content managementsystem 110 interacting with client device 150.

Accounts

Content management system 110 can store objects in association withaccounts, as well as perform a variety of object management tasks, suchas retrieve, modify, browse, and/or share the object(s). Furthermore,content management system 110 can enable an account to access object(s)from multiple client devices.

Content management system 110 supports a plurality of accounts. Asubject (user, group, team, company, etc.) can create an account withcontent management system, and account details can be stored in subjectdatabase 140. Subject database 140 can identify a registered subject bya subject ID, and store profile information for registered subjects inassociation with the subject ID. In some cases, profile information forregistered subjects includes a subject name and/or email address.Subject database 140 can include account management information, such asaccount type (e.g. various tiers of free or paid accounts), storagespace allocated, storage space used, client devices 150 having aregistered content management client application 152 resident thereon,security settings, personal configuration settings, etc. In someembodiments, some information associated with an account may not bedirectly stored, and rather this information can be derived. Forexample, storage space used might be explicitly stored, or it can becalculated when needed.

In some embodiments, subject database 140 need not store completeinformation associated with an account for a subject. Some portion ofinformation associated with an account for a subject can also be storedin another database of content management system 110 such as metadatadatabase 146, or in a database external to content management system110.

Subject database 140 can store groups of accounts associated with asubject. Groups can have permissions based on group permissionsstatements and/or access control lists, and members of the groups caninherit the permissions. For example, a marketing group can have accessto one set of objects while an engineering group can have access toanother set of objects. An administrator group can modify groups, modifysubject accounts, etc. Groups are also subjects identified by subjectID.

In some embodiments, subject database 140 can be broken into a pluralityof tables, indexes and other data structures.

Object Storage

A feature of content management system 110 is the storage of objects,which can be stored in object storage 142. An object generally is anyentity that can be recorded in a file system. Objects can be any objectincluding digital data such as documents, collaboration objects, textfiles, audio files, image files, video files, webpages, executablefiles, binary files, object directories, folders, zip files, playlists,albums, symlinks, cloud docs, mounts, placeholder objects referencingother objects in content management system 110 or in other contentmanagement systems, etc.

In some embodiments, objects can be grouped into a collection, which canrefer to a folder including a plurality of objects, or a plurality ofobjects that are related or grouped by a common attribute.

In some embodiments, object storage 142 is combined with other types ofstorage or databases to handle specific functions. Object storage 142can store objects, while metadata regarding the objects can be stored inmetadata database 146. Likewise, data regarding where an object isstored in object storage 142 can be stored in object directory 144.Additionally, data regarding changes, access, etc. can be stored inobjects database 148. Objects database 148 can also include a subjectaccount identifier that identifies the subject IDs that have access tothe object.

In some embodiments, objects database 148 can be broken into a pluralityof tables, indexes and other data structures.

Each of the various storages/databases such as object storage 142,object directory 144, objects database 148, and metadata database 146can be comprised of more than one such storage or database and can bedistributed over many devices and locations. Other configurations arealso possible. For example, data from object storage 142, objectdirectory 144, objects database 148, and/or metadata database 146 may becombined into one or more object storages or databases or furthersegmented into additional object storages or databases. Thus, contentmanagement system 110 may include more or less storages and/or databasesthan shown in FIG. 1 .

In some embodiments, object storage 142 is associated with at least oneobject storage service 116, which includes software or other processorexecutable instructions for managing the storage of objects including,but not limited to, receiving objects for storage, preparing objects forstorage, selecting a storage location for the object, retrieving objectsfrom storage, etc. In some embodiments, object storage service 116 candivide an object into smaller chunks for storage at object storage 142.The location of each chunk making up an object can be recorded in objectdirectory 144. Object directory 144 can include a content entry for eachobject stored in object storage 142. The content entry can be associatedwith an object ID, which uniquely identifies an object.

In some embodiments, each object and each chunk of an object can also beidentified from a deterministic hash function. This method ofidentifying an object and chunks of objects can ensure that objectduplicates are recognized as such since the deterministic hash functionwill output the same hash for every copy of the same object, but willoutput a different hash for a different object. Using this methodology,object storage service 116 can output a unique hash for each differentversion of an object.

Object storage service 116 can also designate or record a parent of anobject or a content path for an object in objects database 148. Thecontent path can include the name of the object and/or folder hierarchyassociated with the object. For example, the content path can include afolder or path of folders in which the object is stored in a local filesystem on a client device. In some embodiments, object database mightonly store a direct ancestor or direct child of any object, which allowsa full path for an object to be derived, and can be more efficient thanstoring the whole path for an object.

While objects are stored in object storage 142 in blocks and may not bestored under a tree like directory structure, such directory structureis a comfortable navigation structure for subjects viewing objects.Object storage service 116 can define or record a content path for anobject wherein the “root” node of a directory structure can be anydirectory with specific access privileges assigned to it, as opposed toa directory that inherits access privileges from another directory.

In some embodiments a root directory can be mounted underneath anotherroot directory to give the appearance of a single directory structure.This can occur when an account has access to a plurality of rootdirectories. As addressed above, the directory structure is merely acomfortable navigation structure for subjects viewing objects, but doesnot correlate to storage locations of objects in object storage 142.

While the directory structure in which an account views objects does notcorrelate to storage locations of the objects at content managementsystem 110, the directory structure can correlate to storage locationsof the objects on client device 150 depending on the file system used byclient device 150.

As addressed above, a content entry in object directory 144 can alsoinclude the location of each chunk making up an object. Morespecifically, the content entry can include content pointers thatidentify the location in object storage 142 of the chunks that make upthe object.

Object storage service 116 can decrease the amount of storage spacerequired by identifying duplicate objects or duplicate blocks that makeup an object or versions of an object. Instead of storing multiplecopies, object storage 142 can store a single copy of the object orblock of the object, and object directory 144 can include a pointer orother mechanism to link the duplicates to the single copy.

Object storage service 116 can also store metadata describing objects,object types, folders, file path, and/or the relationship of objects tovarious accounts, collections, or groups in metadata database 146, inassociation with the object ID of the object.

Object storage service 116 can also store a log of data regardingchanges, access, etc. in objects database 148. Objects database 148 caninclude the object ID of the object and can optionally include adescription of the change or access action along with a time stamp orversion number and any other relevant data. Objects database 148 canalso include pointers to blocks affected by the change or object access.Object storage service 116 can also provide the ability to undooperations, by using an object version control mechanism that trackschanges to objects, different versions of objects (including divergingversion trees), and a change history that can be acquired from objectsdatabase 148.

Object Synchronization

Another feature of content management system 110 is synchronization ofobjects with at least one client device 150. Client device(s) 150 cantake different forms and have different capabilities. For example,client device 150 can be a computing device having a local file systemaccessible by multiple applications resident thereon. Client device 150can be a computing device wherein objects are only accessible to aspecific application or by permission given by the specific application,and the objects are typically stored either in an application specificspace or in the cloud. Client device 150 can be any client deviceaccessing content management system 110 via a web browser and accessingobjects via a web interface. While example client device 150 is depictedin form factors such as a laptop, mobile device, or web browser, itshould be understood that the descriptions thereof are not limited todevices of these example form factors. For example a mobile device mighthave a local file system accessible by multiple applications residentthereon, or might access content management system 110 via a webbrowser. As such, the form factor should not be considered limiting whenconsidering client 150's capabilities. One or more functions describedherein with respect to client device 150 may or may not be available onevery client device depending on the specific capabilities of thedevice—the file access model being one such capability.

In many embodiments, client devices 150 are associated with an accountof content management system 110, but in some embodiments client devices150 can access content using shared links and do not require an account.

As noted above, some client devices can access content management system110 using a web browser. However, client devices can also access contentmanagement system 110 using client application 152 stored and running onclient device 150. Client application 152 can include a clientsynchronization service 156.

Client synchronization service 156 can be in communication with serversynchronization service 112 to synchronize changes to objects betweenclient device 150 and content management system 110.

Client device 150 can synchronize content with content management system110 via client synchronization service 156. The synchronization can beplatform agnostic. That is, content can be synchronized across multipleclient devices of varying types, capabilities, operating systems, etc.Client synchronization service 156 can synchronize any changes (e.g.,new, deleted, modified, copied, or moved objects) to objects in adesignated location of a file system of client device 150.

Objects can be synchronized from client device 150 to content managementsystem 110, and vice versa. In embodiments wherein synchronization isfrom client device 150 to content management system 110, a subject canmanipulate objects directly from the file system of client device 150,while client synchronization service 156 can monitor directory on clientdevice 150 for changes to files within the monitored folders.

When client synchronization service 156 detects a write, move, copy, ordelete of content in a directory that it monitors, clientsynchronization service 156 can synchronize the changes to contentmanagement storage service 116. In some embodiments, clientsynchronization service 156 can perform some functions of contentmanagement storage service 116 including functions addressed above suchas dividing the object into blocks, hashing the object to generate aunique identifier, etc. Client synchronization service 156 can indexcontent within client storage index 164 and save the result in clientstorage index 164. Indexing can include storing paths plus the objectidentifier, and a unique identifier for each object. In someembodiments, client synchronization service 156 learns the objectidentifier from server synchronization service 112, and learns theunique client identifier from the operating system of client device 150.

Client synchronization service 156 can use storage index 164 tofacilitate the synchronization of at least a portion of the objectswithin client storage with objects associated with a subject account oncontent management system 110. For example, client synchronizationservice 156 can compare storage index 164 with content management system110 and detect differences between content on client storage and contentassociated with a subject account on content management system 110.Client synchronization service 156 can then attempt to reconciledifferences by uploading, downloading, modifying, and deleting contenton client storage as appropriate. Object storage service 116 can storethe changed or new block for the object and update objects database 148,metadata database 146, object directory 144, object storage 142, subjectdatabase 140, etc. as appropriate.

When synchronizing from content management system 110 to client device150, data regarding a mount, modification, addition, deletion, move ofan object recorded in objects database 148 can trigger a notification tobe sent to client device 150 using notification service 117. When clientdevice 150 is informed of the change, client device 150 can make arequest for changes listed in objects database 148 since the lastsynchronization point known to the client device. When client device 150determines that it is out of synchronization with content managementsystem 110, client synchronization service 156 requests object blocksincluding the changes, and updates its local copy of the changedobjects.

In some embodiments, storage index 164 stores tree data structureswherein one tree reflects the latest representation of a directoryaccording to server synchronization service 112, while another treereflects the latest representation of the directory according to clientsynchronization service 156. Client synchronization service can work toensure that the tree structures match by requesting data from serversynchronization service 112 or committing changes on client device 150to content management system 110.

Sometimes client device 150 might not have a network connectionavailable. In this scenario, client synchronization service 156 canmonitor the linked collection for object changes and queue those changesfor later synchronization to content management system 110 when anetwork connection is available. Similarly, a subject can manuallystart, stop, pause, or resume synchronization with content managementsystem 110.

Client synchronization service 156 can synchronize all contentassociated with a particular subject account on content managementsystem 110. Alternatively, client synchronization service 156 canselectively synchronize some of the objects associated with theparticular subject account on content management system 110. Selectivelysynchronizing only some of the objects can preserve space on clientdevice 150 and save bandwidth.

In some embodiments, client synchronization service 156 selectivelystores a portion of the objects associated with the particular subjectaccount and stores placeholder objects in client storage for theremainder portion of the objects. For example, client synchronizationservice 156 can store a placeholder object that has the same filename,path, extension, metadata, of its respective complete object on contentmanagement system 110, but lacking the data of the complete object. Theplaceholder object can be a few bytes or less in size while therespective complete object might be significantly larger. After clientdevice 150 attempts to access the object, client synchronization service156 can retrieve the data of the object from content management system110 and provide the complete object to client device 150. This approachcan provide significant space and bandwidth savings while stillproviding full access to a subject's objects on content managementsystem 110.

While the synchronization embodiments addressed above referred to clientdevice 150 and a server of content management system 110, it should beappreciated by those of ordinary skill in the art that a user accountcan have any number of client devices 150 all synchronizing objects withcontent management system 110, such that changes to an object on any oneclient device 150 can propagate to other client devices 150 throughtheir respective synchronization with content management system 110.

Collaboration Features

Another feature of content management system 110 is to facilitatecollaboration between subjects. Collaboration features include objectsharing, commenting on objects, co-working on objects in real time,instant messaging, providing presence and “seen” state informationregarding objects, etc.

Sharing

Content management system 110 can manage sharing objects via sharingservice 128. Sharing an object by providing a link to the object caninclude making the object accessible from any computing device innetwork communication with content management system 110. However, insome embodiments a link can be associated with access restrictionsenforced by content management system 110 and Identity and AccessManagement (IAM) service 132. Sharing content can also include linkingcontent using sharing service 128 to share content within contentmanagement system 110 with at least one additional subject account (inaddition to the original subject account associated with the object) sothat each subject account has access to the object. The additionalsubject account can gain access to the content by accepting the content,which will then be accessible through either web interface service 124or directly from within the directory structure associated with theiraccount on client device 150. The sharing can be performed in a platformagnostic manner. That is, the content can be shared across multipleclient devices 150 of varying type, capabilities, operating systems,etc. The content can also be shared across varying types of subjectaccounts.

To share an object within content management system 110 sharing service128 can add associate a subject ID of a team or of one or more subjectaccounts with a content item in objects database 148 associated with theobject, thus granting the added subject account(s) access to the object.Sharing service 128 can also remove subject IDs from being permitted toaccess a content item in objects database 148 to restrict a subjectaccount's access to the object. Sharing service 128 can record objectidentifiers, subject identifiers given access to an object, and accesslevels in objects database 148. For example, in some embodiments,subject identifiers associated with a single content item can specifydifferent permissions for respective subject identifiers with respect tothe associated object.

In some embodiments, content management system 110 can include an accesscontrol list 145 which includes a description of complete access rightspertaining to a respective object. An access control list for anyrespective object in content management system can be derived fromobjects database 148. In some embodiments, it is not desirable tomaintain a persistent access control list 145 for a respective object,as an access control list 145 for a respective object can be derivedwhen needed. In some embodiments, objects can inherit access rights fromanother object such as ancestor objects.

To share objects outside of content management system 110, sharingservice 128 can generate a custom network address, such as a uniformresource locator (URL), which allows any web browser to access theobject or collection in content management system 110 without anyauthentication. To accomplish this, sharing service 128 can includecontent identification data in the generated URL, which can later beused to properly identify and return the requested object. For example,sharing service 128 can include a token identifying an object ID andoptionally a subject ID in the generated URL. Upon selection of the URL,the content identification data included in the URL can be transmittedto content management system 110, which can use the received contentidentification data to identify the appropriate object and return theobject.

In addition to generating the URL, sharing service 128 can also beconfigured to record in objects database 148 that a URL to the objecthas been created. In some embodiments, an entry into objects database148 associated with an object can include a URL flag indicating whethera URL to the object has been created. For example, the URL flag can be aBoolean value initially set to 0 or false to indicate that a URL to theobject has not been created. Sharing service 128 can change the value ofthe flag to 1 or true after generating a URL to the object.

In some embodiments, sharing service 128 can associate a set ofpermissions to a URL for an object. For example, if a subject attemptsto access the object via the URL, sharing service 128 can provide alimited set of permissions for the object. Examples of limitedpermissions include restrictions that the subject cannot download theobject, save the object, copy the object, modify the object, etc. Insome embodiments, limited permissions include restrictions that onlypermit an object to be accessed from with a specified domain, i.e., fromwithin a corporate network domain, or by accounts associated with aspecified domain, e.g., accounts associated with a company account(e.g., @acme.com).

In some embodiments, sharing service 128 can also be configured todeactivate a generated URL. For example, each entry into objectsdatabase 148 can also include a URL active flag indicating whether thecontent should be returned in response to a request from the generatedURL. For example, sharing service 128 can only return an objectrequested by a generated link if the URL active flag is set to 1 ortrue. Thus, access to an object for which a URL has been generated canbe easily restricted by changing the value of the URL active flag. Thisallows a subject to restrict access to the shared object without havingto move the object or delete the generated URL. Likewise, sharingservice 128 can reactivate the URL by again changing the value of theURL active flag to 1 or true. A subject can thus easily restore accessto the object without the need to generate a new URL.

In some embodiments, content management system 110 can designate a URLfor uploading an object. For example, a first subject with a subjectaccount can request such a URL, provide the URL to a contributingsubject and the contributing subject can upload an object to the firstsubject's subject account using the URL.

Team Service

In some embodiments content management system 110 includes team service130. Team service 130 can provide functionality for creating andmanaging defined teams of subject accounts. Teams can be created for acompany, with sub-teams (e.g., business units, or project teams, etc.),and subject accounts assigned to teams and sub-teams, or teams can becreated for any defined group of subject accounts. Teams service 130 canprovide a common shared space for the team, private subject accountfolders, and access limited shared folders. Teams service 130 can alsoprovide a management interface for an administrator to managecollections and objects within team, and can manage subject accountsthat are associated with the team. Teams, sub-teams, subject accountsare all given a subject identifier in subjects database 140, and themembership to teams by subject accounts is also recorded in subjectsdatabase 140.

IAM (Identity and Access Management) Service

In some embodiments, content management system 110 includes IAM service132. IAM service 132 can authenticate a subject account. For subjectaccounts with multiple levels of rights (e.g. a subject account withsubject rights and administrator rights) IAM service 132 can alsofacilitate explicit privilege escalation to avoid unintentional actionsby administrators.

Object Access

Object storage service 116 can receive a token from client application152 that follows a request to access an object and can return thecapabilities permitted to the subject account.

Presence and Seen State

In some embodiments, content management system can provide informationabout how subjects with which an object is shared are interacting orhave interacted with the object. In some embodiments, content managementsystem 110 can report that a subject with which an object is shared iscurrently viewing the object. For example, client collaboration service160 can notify notifications service 117 when client device 150 isaccessing the object. Notifications service 117 can then notify allclient devices of other subjects having access to the same object of thepresence of the subject of client device 150 with respect to the object.

In some embodiments, content management system 110 can report a historyof subject interaction with a shared object. Collaboration service 126can query data sources such as metadata database 146 and objectsdatabase 148 to determine that a subject has saved the object, that asubject has yet to view the object, etc., and disseminate this statusinformation using notification service 117 to other subjects so thatthey can know who currently is or has viewed or modified the object.

Collaboration service 126 can facilitate comments associated withcontent, even if an object does not natively support commentingfunctionality. Such comments can be stored in metadata database 146.

Collaboration service 126 can originate and transmit notifications forsubjects. For example, a subject can mention another subject in acomment and collaboration service 126 can send a notification to thatsubject letting them know that they have been mentioned in the comment.Various other object events can trigger notifications, includingdeleting an object, sharing an object, etc.

Collaboration service 126 can also provide a messaging platform wherebysubjects can send and receive instant messages, voice calls, emails,etc.

Collaboration Objects

In some embodiments content management service can also includecollaborative document service 134 which can provide an interactiveobject collaboration platform whereby subjects can simultaneously createcollaboration objects, comment in the collaboration objects, and managetasks within the collaboration objects. Collaboration objects can befiles that subjects can create and edit using a collaboration objecteditor, and can contain collaboration object elements. Collaborationobject elements may include a collaboration object identifier, one ormore author identifiers, collaboration object text, collaboration objectattributes, interaction information, comments, sharing subjects, etc.Collaboration object elements can be stored as database entities, whichallows for searching and retrieving the collaboration objects. Multiplesubjects may access, view, edit, and collaborate on collaborationobjects at the same time or at different times. In some embodiments thiscan be managed by requiring two subjects access an object through a webinterface and there they can work on the same copy of the object at thesame time.

Collaboration Companion Interface

In some embodiments client collaboration service 160 can provide anative application companion interface for the purpose of displayinginformation relevant to an object being presented on client device 150.In embodiments wherein an object is accessed by a native applicationstored and executed on client device 150, where the object is in adesignated location of the file system of client device 150 such thatthe object is managed by content application 152, the native applicationmay not provide any native way to display the above addressedcollaboration data. In such embodiments, client collaboration service160 can detect that a subject has opened an object, and can provide anoverlay with additional information for the object, such ascollaboration data. For example, the additional information can includecomments for the object, status of the object, activity of othersubjects previously or currently viewing the object. Such an overlay canwarn a subject that changes might be lost because another subject iscurrently editing the object.

In some embodiments, one or more of the services or storages/databasesdiscussed above can be accessed using public or private applicationprogramming interfaces.

Certain software applications can access object storage 142 via an APIon behalf of a subject. For example, a software package such as anapplication running on client device 150, can programmatically make APIcalls directly to content management system 110 when a subject providesauthentication credentials, to read, write, create, delete, share, orotherwise manipulate content.

A subject can view or manipulate content stored in a subject account viaa web interface generated and served by web interface service 124. Forexample, the subject can navigate in a web browser to a web addressprovided by content management system 110. Changes or updates to contentin the object storage 142 made through the web interface, such asuploading a new version of an object, can be propagated back to otherclient devices associated with the subject's account. For example,multiple client devices, each with their own client software, can beassociated with a single account and objects in the account can besynchronized between each of the multiple client devices.

Client device 150 can connect to content management system 110 on behalfof a subject. A subject can directly interact with client device 150,for example when client device 150 is a desktop or laptop computer,phone, television, internet-of-things device, etc. Alternatively oradditionally, client device 150 can act on behalf of the subject withoutthe subject having physical access to client device 150, for examplewhen client device 150 is a server.

Some features of client device 150 are enabled by an applicationinstalled on client device 150. In some embodiments, the application caninclude a content management system specific component. For example, thecontent management system specific component can be a standaloneapplication 152, one or more application plug-ins, and/or a browserextension. However, the subject can also interact with contentmanagement system 110 via a third-party application, such as a webbrowser, that resides on client device 150 and is configured tocommunicate with content management system 110. In variousimplementations, the client-side application 152 can present a subjectinterface (UI) for a subject to interact with content management system110. For example, the subject can interact with the content managementsystem 110 via a file system explorer integrated with the file system orvia a webpage displayed using a web browser application.

In some embodiments, client application 152 can be configured to manageand synchronize content for more than one account of content managementsystem 110. In such embodiments, client application 152 can remainlogged into multiple accounts and provide normal services for themultiple accounts. In some embodiments, each account can appear as afolder in a file system, and all objects within that folder can besynchronized with content management system 110. In some embodiments,client application 152 can include a selector to choose one of themultiple accounts to be the primary account or default account.

In some embodiments, content management system 110 can include remotecapture service 136. Remote capture service 136 can be used to configurea capture request where the capture will be executed at a remote clientdevice using a web browser. The resulting capture object can be storedby object storage service 116 at a location configured by remote captureservice 136.

Third Party Services

In some embodiments content management system 110 can includefunctionality to interface with one or more third-party services such asworkspace services, email services, task services, etc. In suchembodiments, content management system 110 can be provided with logincredentials for a subject account at the third party service to interactwith the third party service to bring functionality or data from thosethird party services into various subject interfaces provided by contentmanagement system 110.

While content management system 110 is presented with specificcomponents, it should be understood by one skilled in the art that thearchitectural configuration of system 100 is simply one possibleconfiguration and that other configurations with more or fewercomponents are possible. Further, a service can have more or lessfunctionality, even including functionality described as being withanother service. Moreover, features described herein with respect to anembodiment can be combined with features described with respect toanother embodiment.

While system 100 is presented with specific components, it should beunderstood by one skilled in the art, that the architecturalconfiguration of system 100 is simply one possible configuration andthat other configurations with more or fewer components are possible.

FIG. 2 illustrates an example system for creating a remote capturerequest and causing client device 150 to carry out the capture accordingto parameters configured as part of the capture request.

FIG. 2 illustrates remote capture service 136. Remote capture service136 provides remote capture requests as a service, wherein a requestinguser can interact with remote capture service 136 to configure a remotecapture request to be sent to a recipient user at a recipient device. Insome embodiments, remote capture service 136 can be a standalone serviceinterfacing with content management system 110 via one or moreapplication programming interfaces (APIs), while in some embodiments,remote capture service 136 can be integrated with content managementsystem 110 as a service provided by content management system 110.

Whether remote capture service 136 is a service provided by a contentmanagement system 110 or as a standalone service, remote capture service136 can be integrated with requesting service 205. Remote captureservice 136 can be integrated with requesting service 205 by way of aspecifically built integration or by way of requesting service 205interacting with remote capture service 136 using one or more APIs.Additionally, a user could navigate to a web page or app provided by theremote capture service to configure and sent a remote capture request toa recipient user.

Requesting service 205 can be configured to provide an interface forconfiguring a remote capture request. Once the remote capture request isconfigured, requesting service 205 can utilize remote capture service136 to provide a link that is specific to the configured capturerequest. The requesting service 205 or remote capture service 136 cansend the link to the capture request to recipient device 210.

In some embodiments, recipient device 210 can be a client device 150.Although, it is not required that the recipient device 210 have clientapplication 152 installed in order to perform the features of thepresent technology.

Once received by recipient device 210, a recipient user operatingrecipient device 210 can click on the link for the remote capturerequest. The link can cause recipient device 210 to request a web pageusing an Internet browser that can be provided by remote capture service136. The Internet browser on recipient device 210 can load the web pageprovided by remote capture service 136. The web page provided by remotecapture service 136 can include code effective to interact with the webbrowser to initiate a capture on recipient device 210.

The capture can be a screenshot, camera video recording, camera photo,screen video recording, audio recordings, or GIF, or any combination ofthe these. For example, the capture request can be configured to causerecipient device 210 to take a screenshot of a window displayed onrecipient device 210 or to create a video from recording a screen ofrecipient device. The capture request can be configured to causerecipient device 210 use a camera to record a video or a still image.The capture request can be configured to cause recipient device 210 usea microphone to record audio. The capture request can be configured tocause recipient device 210 to utilize any hardware or software userinterface devices to capture audiovisual information and store it in acapture object.

Once the capture is completed, recipient device 210 can send a captureobject that includes data descriptive of the capture to be stored atobject storage service 116. For example, the capture object can be avideo file including a screen recording, a camera recording, or acombined screen recording and camera recording (e.g., as illustrated inFIG. 6E). The capture object can be an image file including a stillimage from a camera, or a screenshot of the display of the recipientdevice 210. The capture object can be an audio file including audiocaptured using a microphone or sound card of recipient device 210.

While object storage service 116 is depicted as being part of contentmanagement system 110, it should be appreciated by those of ordinaryskill in the art that object storage service 116 can be part of anynetwork accessible storage. Remote capture service 136 can then accessthe capture object at object storage service 116 and provide the objectto requesting service 205. And in some embodiments, providing thecapture object to requesting service 205 can be by way of a shared linkor a shared folder.

FIG. 3 illustrates an example method 300 for remotely initiating acapture request. Although the example method 300 depicts a particularsequence of operations, the sequence may be altered without departingfrom the scope of the present disclosure. For example, some of theoperations depicted may be performed in parallel or in a differentsequence that does not materially affect the function of the method 300.In other examples, different components of an example device or systemthat implements the method 300 may perform functions at substantiallythe same time or in a specific sequence.

The present technology can be in the context of a technical supportenvironment. For example, a user operating recipient device 210 can becommunicating with a technical support representative at requestingservice 205. The technical support representative can determine that itwould be useful to have a screen capture from recipient device 210demonstrating the issue that the user operating recipient device 210 isexperiencing. In such a context, the technical support representative atrequesting service 205 can request the capture from recipient device210.

The present technology can also take place in the context of aneducational setting wherein an instructor interacting with requestingservice 205 may want to receive a capture from a student operatingrecipient device 210 to demonstrate work product or some learned skill.In such a context, the instructor at requesting service 205 can requestthe capture from recipient device 210.

The present technology can also occur in the context of an organizationstructure wherein a team leader interacting with requesting service 205may want to receive a capture from a team member operating recipientdevice 210 that demonstrates progress, or a question related to a taskthat the team is working on. In such a context, the team leader atrequesting service 205 can request the capture from recipient device210.

The present technology can take place in other contexts as well. Thecontexts described above are merely representative examples.

According to some embodiments, the method includes receivinginstructions to configure a request from a requesting user for the mediacapture at block 305. For example, the remote capture service 136 mayreceive instructions to configure the request for the media capture fromthe requesting user.

The requesting user can be interacting with requesting service 205,which can be, for example, a customer support service (such as ZENDESKor customer support specific to any other service), an IT ticket service(such as JIRA), an educational platform (GOOGLE CLASSROOMS, orBLACKBOARD), a workflow platform (such as TRELLO), or a communicationplatform (such as email, instant messaging, workspace tools such asSLACK), etc. The above are merely examples provided for context andshould not be considered limiting examples of the requesting service205.

In some embodiments, the instructions to configure the request for themedia capture from the requesting user can take the form of therequesting user selecting an option provided by remote capture service136 within the requesting service 205 to send the capture request.

In some embodiments, the requesting service 205 can include the remotecapture service 136 as part of the requesting service. In someembodiments, the remote capture service 136 is a standalone service oris part of content management system 110 (as illustrated in FIG. 1 ),and the requesting service interacts with the remote capture service 136through a purpose-built integration (e.g., an App) or one or more publicAPIs. In some embodiments, the requesting service 205 can present anoption to utilize remote capture service 136. The option to utilize theremote capture service can launch an interface to configure the remotecapture request.

Regardless of where the remote capture service 136 is located, therequesting user can interact with remote capture service 136 toconfigure the capture request. The requesting user can configure thecapture request by at least choosing the recipient of the capturerequest, but may include configuring additional options too. Suchadditional options can include the type of capture, such as whether tocapture a screenshot, camera video recording, camera photo, screen videorecording, audio recordings, or GIF, or any combination of the these.The additional options can include a location to store the media captureobject, whether the media capture should include a screen capture and/ora video capture, a length of the media capture, etc. In someembodiments, additional options can include linking the capture requestto a workflow, whereby the workflow is triggered when the media captureobject is received. The request for the media capture can further beconfigured to begin streaming the media capture to the requesting userafter the media capture begins. The request for the media capture canalso be configured with a time-to-live (TTL) which will limit a periodin which an object storing the capture will remain accessible or stored.

According to some embodiments, the method includes sending the requestfor the media capture to a recipient device of a recipient user at block310. For example, the remote capture service 136 may send the requestfor the media capture to a recipient device 210 of a recipient user. Therequest for the media capture can be a link included in a communicationthread between the requesting user and the recipient user. For example,the link can be sent in an ongoing chat thread, an email, or othercommunication service. The link can be send directly by the requestinguser, or it can be sent by requesting service 205, or the remote captureservice 136.

The link can include an embedded token identifying attributes of therequest for the media capture. For example, the attributes of therequest can be at least an identification of the specific request forthe media capture. The attributes can further include an identificationof the communication thread in which the link was included.

After receiving the link, the recipient user at recipient device canclick on the link, which can cause a web browser of the recipient device210 to request the resource reference by the link from the remotecapture service 136.

According to some embodiments, the method includes receiving the requestfor the resource referenced by the link at block 315. For example, theremote capture service 136 may receive the request for the resourcereferenced in the token embedded by the link. In some embodiments, theresource referenced by the link can be a website that includesinstructions for both the recipient user and the recipient device 210for carrying out the capture request.

According to some embodiments, the method includes transmitting commandsinterpretable by a browser on the recipient device that is effective tocause the recipient device to initiate the media capture at block 320.For example, the remote capture service 136 may transmit commandsinterpretable by a browser on recipient device 210 that is effective tocause recipient device 210 to initiate the media capture. As notedabove, the commands can be included in a website referred to be thelink. The commands can be interpretable by the browser and can includeone or more calls to a browser application programming interface (API)that can initiate the media capture.

As will be described further with respect to FIG. 5 , the recipientdevice 210 can be configured to initiate the capture by the commandsreceived from the remote capture service 136, and the recipient device210 can perform the requested capture and save the capture.

After the capture has been initiated or completed, the method includesreceiving a media capture object at block 325. For example, the remotecapture service may receive the media capture object from recipientdevice 210. The media capture object can be one or more files containingthe data making up the media captured by recipient device 210.

According to some embodiments, if the request for media capture includeda configured option to link a workflow to the capture request, themethod includes triggering a workflow associated with the request forthe media capture at block 330. For example, the remote capture service136 may trigger a workflow associated with the request for the mediacapture. For example, the workflow could alert the requesting user oranother user that the media capture is available and can progress aproject related to the media capture. For example, a technical supportsession can be progressed, or a work task can be progressed according tothe terms of the linked workflow. In such embodiments, remote captureservice 136 can trigger the workflow, which may be defined at anotherservice, once the capture option has been at least partially received.

According to some embodiments, the method includes storing the mediacapture object in a content management system at block 335. For example,the remote capture service 136 may store the media capture object to alocation in a content management system 110, which may be handled byobject storage service 116. Alternatively, the recipient device 210 cansend the capture object directly to the content management system 110.The token embedded in the link to request the capture object, or thewebpage loaded as a result of the link, can inform the recipient device210 of a location at the content management system 110 to store thecapture object and can provide the recipient device 210 or the captureobject itself, with the necessary permissions to store the captureobject at the specified location within the content management system110.

The location in the content management system may be specified by therequesting user when configuring the request for the media capture. Insome embodiments, the location in the content management system is ashared folder. The shared folder can be shared with team members thatinclude the requesting user. Optionally, the shared folder can be sharedwith the recipient user and the requesting user.

In some embodiments, the media capture object can be associated with aTTL. The TTL can be set as part of the capture request configurationoptions, or can be set by the recipient user, or can be a policy set ona folder in which the capture object is stored. The media capture objectcan be deleted or become inaccessible to the requesting user after theTTL expires.

According to some embodiments, the method provides access to the mediacapture object to the requesting user at block 340. For example, theremote capture service 136 may provide access to the media captureobject to the request user. The remote capture service 136 can notifythe requesting user when the media capture object is received. Thenotification can include a link to access the media capture object atthe location in which it is stored. In some embodiments, thenotification can be sent to the requesting user and/or the recipientuser. In some embodiments, the notification may only need to inform therequesting user that the capture object is stored in an accessiblelocation, such as a folder in content management system 110.

In some embodiments, the remote capture service 136 can associate thecapture object with data at the requesting service 205. For example, theremote capture service can associate the capture object with aparticular ticket associated with a technical support request, or with astudent ID, or with a project code name, or communication thread, etc.

In some embodiments, the notification that provides access to the mediaobject can be an email, such as an email thread between the requestinguser and the recipient user. In some embodiments, the notification canbe messaging thread as part of a website or a communications service forinstant messages or group spaces.

FIG. 4 illustrates an example method 400 for configuring and initiatinga remote capture request by a user interface available throughrequesting service 205. Although the example method 400 depicts aparticular sequence of operations, the sequence may be altered withoutdeparting from the scope of the present disclosure. For example, some ofthe operations depicted may be performed in parallel or in a differentsequence that does not materially affect the function of the method 400.In other examples, different components of an example device or systemthat implements the method 400 may perform functions at substantiallythe same time or in a specific sequence.

According to some embodiments, the method includes receiving a selectionof a user interface button to send a request for a media capture to therecipient device at block 410. For example, the requesting service 205may present a user interface button to configure and send a mediacapture request. The requesting service 205 can receive a selection ofthe user interface button to send the request for a media capture to therecipient device 210. In some embodiments, the user interface button isincluded in a messaging interface being used by the requesting user tocommunicate with a recipient user who is accessible at the recipientdevice 210.

The method further includes receiving a configuration of optionsassociated with the request for the media capture at block 420. Forexample, prior to sending the request, the requesting service 205 mayreceive a configuration of options associated with the request for themedia capture. The configuration of options can include a location tostore the media capture object, whether the media capture includes ascreenshot, camera video recording, camera photo, screen videorecording, audio recordings, or GIF, or any combination of the these, alength of the media capture, etc. The configuration of options caninclude a location in a content management system where the mediacontent object should be stored after the media capture by the recipientdevice. The options can include configuring the link to access the mediacapture object to be included in a workflow. The configuration ofoptions can include entering a name for the recording. The options caninclude configuring a time-to-live (TTL) to be associated with the mediacapture object, whereby the media capture object is deleted or becomesinaccessible to the requesting user after the TTL expires.

According to some embodiments, the method includes sending the requestfor the media capture to the recipient device at block 430. For example,the requesting service 205 may send the request for the media capture tothe recipient device 210.

The receiving user can click on the request for the media capture at therecipient device. As will be explained in greater detail with respect toFIG. 5 below, the recipient device can capture content as configured bythe requesting service 205 and send a capture object to object storageservice 116 or to remote capture service 136.

According to some embodiments, the method includes receiving anotification that a media capture object has been received in responseto the request for the media capture object at block 440. For example,the requesting service 205 may receive a notification that a mediacapture object has been received in response to the request for themedia capture object. The notification can include a link to access themedia capture object. In some embodiments, the link can point to themedia capture object stored at the content management system 110.

In some embodiments, the remote capture service 136 can associate thecapture object with data at the requesting service 205. For example, theremote capture service 136 can associate the capture object with aparticular ticket associated with a technical support request, or with astudent ID, or with a project code name, or communication thread, etc.

FIG. 5 illustrates an example method 500 for receiving a remotelyinitiated capture request and performing the capture on a recipientdevice 210. Although the example method 500 depicts a particularsequence of operations, the sequence may be altered without departingfrom the scope of the present disclosure. For example, some of theoperations depicted may be performed in parallel or in a differentsequence that does not materially affect the function of the method 500.In other examples, different components of an example device or systemthat implements the method 500 may perform functions at substantiallythe same time or in a specific sequence.

According to some embodiments, the method includes receiving the requestfor the media capture by a recipient device of a recipient user at block505. For example, the recipient device 210 may receive the request forthe media capture. The request for the media capture can originate fromthe remote capture service 136 or the requesting service 205. An exampleof a request for the media capture is illustrated in FIG. 6A.

In some embodiments, the request for the media capture is a linkreceived in a messaging platform. The recipient user can click on thelink, and the recipient device 210 can receive the user input selectingthe link. When activated by the user input selecting the link, the linkcan cause the recipient device to display a web interface, such as a webpage or a pop-up, with the request for the media capture. The recipientuser does not need to identify a capture recording application on therecipient device.

In some embodiments, the method illustrated in FIG. 5 can skip directlyto step 525 and 530, wherein the media capture can be initiated asconfigured by the requesting user. However, in some embodiments, therecipient user may be presented with additional options, or may bepresented with a user interface to confirm some options selected by therecipient user.

The web interface can provide further options regarding the capturerequest. In some embodiments, some options have been pre-configured bythe requesting user. For example, the options can include a requirementto have a camera on, a location to store the media capture object,whether the media capture includes a screenshot, camera video recording,camera photo, screen video recording, audio recordings, or GIF, or anycombination of the these, a length of the media capture, etc.

According to some embodiments, the method includes receiving a selectionof media capture options prior to receiving the selection of the startcapture user interface button at block 510. For example, the recipientdevice may receive a selection of media capture options prior toreceiving the selection of the start capture user interface button.While some options can be pre-configured by the requesting user, therecipient user can also select options. Some options may not have beenpre-configured, or the recipient user might override the pre-configuredoptions by de-selecting the option. In some embodiments, the useroptions can include the same options that are provided to the requestinguser. In some embodiments, there are options that are specific to therecipient user. For example, the recipient user can make a selection ofa window or screen to capture. An example of a user interface showingsome options that can be selected is illustrated at FIG. 6B. An exampleof a user interface showing options regarding which window or screen tocapture is illustrated at FIG. 6D. Examples of the start capture userinterface button include button 620 in FIG. 6B, or button 642 in FIG.6D.

According to some embodiments, the method includes receiving a selectionof system permissions to permit a web interface to have access to acamera or to screen capture a window at block 515. For example, therecipient device 210 may receive a selection of system permissions topermit a web interface to have access to a camera, a microphone, and/ora window to capture. The recipient device or operating system executingthereon may require the web interface to explicitly request permissionor otherwise have the recipient user's permission before starting amedia capture. An example of a user interface showing such a permissionrequest is illustrated at FIG. 6C.

According to some embodiments, the method includes presenting a startcapture user interface button in response to the received request forthe media capture at block 520. For example, the recipient device maypresent a start capture user interface button that is presented inresponse to the received request for the media capture.

According to some embodiments, the method includes receiving a selectionof the start capture user interface button at block 525. For example,the recipient device 210 may receive a selection of the start captureuser interface button. Examples of the start capture user interfacebutton include button 620 in FIG. 6B, or button 642 in FIG. 6D.

According to some embodiments, the method includes initiating the mediacapture by the recipient device after receiving the selection of thestart capture user interface button at block 530. For example, therecipient device 210 may initiate the media capture by the recipientdevice after receiving the selection of the start capture user interfacebutton. The recipient user does not need to identify an application todo the recording, and many of the available options can bepre-configured by the requesting user. Thus, it is easy for therecipient user to navigate any provided menus of options and start thecapture in response to the capture request with minimal effort.

According to some embodiments, the method includes terminating the mediacapture at block 535. For example, the recipient device 210 mayterminate the media capture in response to an expiration of a timer, orin response to the recipient user clicking a user interface button tostop the recording. An example of a user interface button to stop therecording is illustrated in FIG. 6E.

According to some embodiments, the method includes sending a mediacapture object including the media capture to the requesting service atblock 540. For example, the recipient device 210 may automatically senda media capture object including the media capture to the requestingservice 205. In some embodiments, sending a media capture object,including the media capture, to the requesting service 205 includessending the media capture object to the requesting user. An example of auser interface after the recording is sent is illustrated in FIG. 6F.The sending of the media capture object can occur without furtherrecipient user involvement. Thus, the recipient user does not need tofigure out how to send a large file, or even figure out where the mediacapture object has been saved. The whole process can occur with minimaluser involvement and can be more efficient on recipient device 210because the recipient device does not need to store a copy after it hasbeen transmitted.

In another example of sending a media capture object at block 540, themethod includes storing the media capture object to object storageservice 116 or a location in a content management system 110. Forexample, the recipient device 210 may store the media capture object toa location in content management system 110. The capture object can evenbe streamed in chunks to the content management system 110.

Throughout the method illustrated in FIG. 5 , the recipient user did notneed to identify a capture recording application on recipient device210, and some options may even have been chosen for them. In addition tothese convenient features, the recipient user did not need to take anyactions to save the capture object that resulted from the capturedrecording, and the recipient user did not need to take any steps to sendthe capture object to the requesting service 205 or requesting user.

FIGS. 6A, 6B, 6C, 6D, 6E, and 6F illustrate a series of user interfacesdisplayed by the recipient device, including an interface for receivinga capture request, interfaces for progressing through the capturerequest, and an interface for sending the capture request to therequesting user.

FIG. 6A illustrates an example of a request for the media capture. Morespecifically, FIG. 6A illustrates a messaging interface showing acommunication coming from a requesting user to a recipient user wherethe requesting user has included a capture request 602. Capture request602 can be displayed in the form of a selectable user interface button.The recipient user can select the user interface button for the capturerequest 602, which can cause recipient device 210 to open a web pagerelated to the capture request.

FIG. 6B illustrates an example of a user interface showing options thatcan be selected by a recipient user. After the recipient user hasselected the user interface button for the capture request 602, anInternet browser on recipient device 210 can open a web page that can beused to initiate the capture. FIG. 6B illustrates an example of a fewoptions that could be illustrated on the webpage that can be used toinitiate the capture. In some embodiments, the requesting user may havepreconfigured selections of some of these options. For example, in FIG.6B the requesting user may have preconfigured the capture request torecord both a screen displayed on recipient device 210 and a video ofthe recipient user using the camera on the recipient device 210. Thiscan be determined because the option for “screen+camera” 614 is alreadyselected.

In some embodiments, the recipient user may make alternative selectionseven if the requesting user has requested certain options. In someembodiments, the requesting user may not have configured any of theseoptions, and some of the options must be selected by the recipient user.FIG. 6B provides options to choose whether to record a “screen only”612, which would record the screen of recipient device 210, or to recordthe “screen+camera” 614 as described above. Additionally, the recipientuser can select a source of audio using 616. The user can also select asource of video 618. Once the recipient user has selected the desiredoptions, the user can select the user interface button 620 to startrecording.

In some embodiments, a selection of the start recording user interfacebutton 620 can begin a capture of the entire screen of the recipientdevice. In some embodiments, a selection of the start recording userinterface button 620 can progress to further user interfaces to givepermissions and/or to select specific screens or windows for recording.

FIG. 6C illustrates an example of a user interface showing a permissionrequest. In some embodiments, recipient device 210 may require that therecipient user confirm that the web browser application performing thecapture is authorized to perform the capture. This may take the form ofproviding the web browser with permissions to record other windows onrecipient device 210, use a microphone of recipient device 210, orrequest permission for the browser to use the camera to record the video630 of the recipient user.

FIG. 6C also shows a browser window showing the options 625 addressedwith respect to FIG. 6B. FIG. 6C also shows an example window 635 thatillustrates how the capture request might appear when combined with arecording of the recipient user.

FIG. 6D illustrates an example of a user interface showing optionsregarding which window or screen to capture. For example, when recipientdevice 210 has multiple applications, windows, or tabs open in anInternet browser, it can display a popup window or modal 640 providingthe recipient user with options to choose what content to record. Forexample, the user could choose to record their entire screen or recordjust a particular application window or a particular tab of an Internetbrowser. Once the desired option is selected, the user can initiate thecapture request by selecting the user interface button 642.

FIG. 6E illustrates an example of a user interface while the capture isongoing and a button to stop the recording. While the capture isongoing, the user will see the display of recipient device 210 as normalexcept that an additional user interface component 650 indicating thatthe capture is occurring can be displayed above the other content on thedisplay. During the capture, the recipient user can interface withrecipient device 210 to demonstrate whatever technical support issue,project progress, or whatever else they desire to demonstrate to therequesting user.

During this demonstration, the view 654 of the recipient user mayinclude a portion of the screen. If the view 654 of the recipient usergets in the way of the demonstration, the recipient user can interactwith the recipient device 210 to select and drag the recipient view 654to another location on the screen.

Once the recipient user has completed their demonstration, they canselect user interface button 652 to end the sharing.

FIG. 6F illustrates an example of a user interface after the recordingis sent. Additionally, the recipient user may be able to click on top ofan image of a frame of the capture request 660 that is displayed in theuser interface to review the recording of the screen capture. In someembodiments, rather than displaying an image from the capture request660, the user interface may provide a link to the capture object.

While FIGS. 6A-6F show an example of user interfaces used for a receivedcapture request and only show options for a screen capture or screencapture+video, it should be understood that other capture options arepossible. For example, the capture request can be a request for ascreenshot, camera video recording, camera photo, screen videorecording, audio recordings, GIF, or any combination of the these.

As addressed above, the requesting service 205 can configure a varietyof options to be associated with the capture request. One such option isan option to provide a video capture (video of a screen or recorded by acamera) of a desired time. This option can be implemented in any ofseveral ways. For example, the web page provided by remote captureservice 136 can also include a timer to automatically end the recordingwhen the video capture reaches the maximum length. Another way toimplement this feature is by using the object storage service toautomatically truncate any recordings that are longer than theconfigured time.

Security and privacy are also important in the context of the presenttechnology. In addition to state of the art best practices to preventspoofing and other malicious and unauthorized practices over theInternet, the present technology can also ensure valid users of remotecapture service 136 do not abuse the service. For example, objectstorage service 116 can configure access to the capture object to be viaInternet browser only and can prevent the capture object from beingdownloaded and saved to a local storage on any client device. Objectstorage service can limit a number times a capture object can beaccessed, and can limit an amount of time the capture object can beaccessed. Additionally, as addressed above, a capture object can beassociated with a time-to-live (TTL) wherein once the TTL expires thecapture object can be automatically deleted.

The remote capture service 136 can also include policies for when acapture request can be made. For example, the remote capture service 136can limit a number of recordings any one user can request over a period.The remote capture service 136 can require a capture request to belinked to a context identified by a ticket ID, a project ID, aclassroom, a workflow, etc., and can limit a number of recordingsassociated with such contexts.

In some embodiments recordings must be associated with a password suchthat a recording can only be accessed with a password created at thetime of remotely configuring the request. In some embodiments, theremote capture requests can be required to be sent by the remote captureservice directly at an email address, and only a recipient user thatlogs in with the same email will be able to utilize the capture service136.

FIG. 7 shows an example of computing system 700, which can be forexample any computing device making up the remote capture service 136,the requesting service 205, or recipient device 210, or any componentthereof in which the components of the system are in communication witheach other using connection 705. Connection 705 can be a physicalconnection via a bus, or a direct connection into processor 710, such asin a chipset architecture. Connection 705 can also be a virtualconnection, networked connection, or logical connection.

In some embodiments, computing system 700 is a distributed system inwhich the functions described in this disclosure can be distributedwithin a datacenter, multiple data centers, a peer network, etc. In someembodiments, one or more of the described system components representsmany such components each performing some or all of the function forwhich the component is described. In some embodiments, the componentscan be physical or virtual devices.

Example system 700 includes at least one processing unit (CPU orprocessor) 710 and connection 705 that couples various system componentsincluding system memory 715, such as read-only memory (ROM) 720 andrandom access memory (RAM) 725 to processor 710. Computing system 700can include a cache of high-speed memory 712 connected directly with, inclose proximity to, or integrated as part of processor 710.

Processor 710 can include any general purpose processor and a hardwareservice or software service, such as services 732, 734, and 736 storedin storage device 730, configured to control processor 710 as well as aspecial-purpose processor where software instructions are incorporatedinto the actual processor design. Processor 710 may essentially be acompletely self-contained computing system, containing multiple cores orprocessors, a bus, memory controller, cache, etc. A multi-core processormay be symmetric or asymmetric.

To enable user interaction, computing system 700 includes an inputdevice 745, which can represent any number of input mechanisms, such asa microphone for speech, a touch-sensitive screen for gesture orgraphical input, keyboard, mouse, motion input, speech, etc. Computingsystem 700 can also include output device 735, which can be one or moreof a number of output mechanisms known to those of skill in the art. Insome instances, multimodal systems can enable a user to provide multipletypes of input/output to communicate with computing system 700.Computing system 700 can include communications interface 740, which cangenerally govern and manage the user input and system output. There isno restriction on operating on any particular hardware arrangement, andtherefore the basic features here may easily be substituted for improvedhardware or firmware arrangements as they are developed.

Storage device 730 can be a non-volatile memory device and can be a harddisk or other types of computer readable media which can store data thatare accessible by a computer, such as magnetic cassettes, flash memorycards, solid state memory devices, digital versatile disks, cartridges,random access memories (RAMs), read-only memory (ROM), and/or somecombination of these devices.

The storage device 730 can include software services, servers, services,etc., that when the code that defines such software is executed by theprocessor 710, it causes the system to perform a function. In someembodiments, a hardware service that performs a particular function caninclude the software component stored in a computer-readable medium inconnection with the necessary hardware components, such as processor710, connection 705, output device 735, etc., to carry out the function.

For clarity of explanation, in some instances, the present technologymay be presented as including individual functional blocks includingfunctional blocks comprising devices, device components, steps orroutines in a method embodied in software, or combinations of hardwareand software.

Any of the steps, operations, functions, or processes described hereinmay be performed or implemented by a combination of hardware andsoftware services or services, alone or in combination with otherdevices. In some embodiments, a service can be software that resides inmemory of a client device and/or one or more servers of a contentmanagement system and perform one or more functions when a processorexecutes the software associated with the service. In some embodiments,a service is a program or a collection of programs that carry out aspecific function. In some embodiments, a service can be considered aserver. The memory can be a non-transitory computer-readable medium.

In some embodiments, the computer-readable storage devices, mediums, andmemories can include a cable or wireless signal containing a bit streamand the like. However, when mentioned, non-transitory computer-readablestorage media expressly exclude media such as energy, carrier signals,electromagnetic waves, and signals per se.

Methods according to the above-described examples can be implementedusing computer-executable instructions that are stored or otherwiseavailable from computer-readable media. Such instructions can comprise,for example, instructions and data which cause or otherwise configure ageneral purpose computer, special purpose computer, or special purposeprocessing device to perform a certain function or group of functions.Portions of computer resources used can be accessible over a network.The executable computer instructions may be, for example, binaries,intermediate format instructions such as assembly language, firmware, orsource code. Examples of computer-readable media that may be used tostore instructions, information used, and/or information created duringmethods according to described examples include magnetic or opticaldisks, solid-state memory devices, flash memory, USB devices providedwith non-volatile memory, networked storage devices, and so on.

Devices implementing methods according to these disclosures can comprisehardware, firmware and/or software, and can take any of a variety ofform factors. Typical examples of such form factors include servers,laptops, smartphones, small form factor personal computers, personaldigital assistants, and so on. The functionality described herein alsocan be embodied in peripherals or add-in cards. Such functionality canalso be implemented on a circuit board among different chips ordifferent processes executing in a single device, by way of furtherexample.

The instructions, media for conveying such instructions, computingresources for executing them, and other structures for supporting suchcomputing resources are means for providing the functions described inthese disclosures.

Illustrative examples of the disclosure include:

Aspect 1: A method for receiving a media capture from a recipient of arequest for the media capture comprising: sending the request for themedia capture to a recipient device of a recipient user, the request forthe media capture being to record content by the recipient device, therequest for the media capture being configured by a requesting user;receiving a media capture object including the media capture from therecipient device; and providing access to the media capture object tothe requesting user.

Aspect 2: The method of Aspect 1, further comprising: receivinginstructions to configure the request for the media capture from the bythe requesting user.

Aspect 3: The method of any of Aspects 1 to 2, wherein the instructionsto configure the request for the media capture include options, whereinthe options include a location to store the media capture object,whether the media capture includes a screen capture and/or a videocapture, a length of the media capture.

Aspect 4: The method of any of Aspects 1 to 3, wherein the receiving theinstructions to configure the request for the media capture requestoriginates from a service platform, wherein the requesting userinteracts with the recipient user through the service platform as therequesting user aids in performing a service provided by the serviceplatform.

Aspect 5: The method of any of Aspects 1 to 4, wherein the serviceplatform is a customer assistance platform.

Aspect 6: The method of any of Aspects 1 to 5, wherein the serviceplatform is an issue tracking platform.

Aspect 7: The method of any of Aspects 1 to 6, wherein the serviceplatform is an educational platform.

Aspect 8: The method of any of Aspects 1 to 7, further comprising:notifying the requesting user when the media capture object is received,wherein the notification is provided to the requesting user through theservice platform.

Aspect 9: The method of any of Aspects 1 to 8, further comprising:storing the media capture object to a location in a content managementsystem.

Aspect 10: The method of any of Aspects 1 to 9, wherein the location inthe content management system was specified by the requesting user whenconfiguring the request for the media capture.

Aspect 11: The method of any of Aspects 1 to 10, wherein the location inthe content management system is a shared folder.

Aspect 12: The method of any of Aspects 1 to 11, wherein the sharedfolder is shared with members of a team that incudes the requestinguser.

Aspect 13: The method of any of Aspects 1 to 12, wherein the sharedfolder is shared with the recipient user and the requesting user.

Aspect 14: The method of any of Aspects 1 to 13, further comprising:sending a link to access the media capture object to the requesting userand/or the recipient user.

Aspect 15: The method of any of Aspects 1 to 14, wherein the method isperformed by the content management system.

Aspect 16: The method of any of Aspects 1 to 15, wherein the request forthe media capture is a link with a token embedded in the linkidentifying attributes of the request for the media capture.

Aspect 17: The method of any of Aspects 1 to 16, further comprising:receiving a request for a resource referenced by the link; transmittingcommands interpretable by a browser on the recipient device that iseffective to cause the recipient device to initiate the media capture.

Aspect 18: The method of any of Aspects 1 to 17, wherein the commandsinterpretation by the browser include a call to a browser applicationprogramming interface (API) that can initiate the media capture.

Aspect 19: The method of any of Aspects 1 to 18, further comprising:notifying the requesting user when the media capture object is received.

Aspect 20: The method of any of Aspects 1 to 19, wherein the request forthe media capture further being configured to link to a workflow,whereby when the media capture object is received, the workflow istriggered.

Aspect 21: The method of any of Aspects 1 to 20, wherein the request forthe media capture further being configured to require a specified lengthof the capture.

Aspect 22: The method of any of Aspects 1 to 21, wherein the request forthe media capture further being configured to begin streaming the mediacapture to the requesting user after the media capture beings.

Aspect 23: The method of any of Aspects 1 to 22, wherein the providingaccess to the media capture object to the requesting user comprises:sharing the media capture object using a shared link with the requestinguser.

Aspect 24: The method of any of Aspects 1 to 23, further comprising:sharing the media capture object using the shared link with therecipient of the request or another user.

Aspect 25: The method of any of Aspects 1 to 24, wherein the providingaccess to the media capture object to the requesting user comprises:sharing the media capture in an email addressed to the requesting user.

Aspect 26: The method of any of Aspects 1 to 25, wherein the request forthe media capture is configured to be associated the media captureobject with a time to live (TTL), wherein the media capture object isdeleted or becomes inaccessible to the requesting user after the TTLexpires.

Aspect 27: A method of initiating a request for a media capture from arecipient device by a requesting device, the method comprising:receiving a selection of a user interface button for sending a requestfor a media capture to the recipient device, the request for the mediacapture being to record content by the recipient device; sending therequest for the media capture to the recipient device; receiving anotification that a media capture object has been received in responseto the request for the media capture object, the notification includinga link to access the media capture object.

Aspect 28: The method of Aspect 27, wherein the user interface button isincluded in a messaging interface presented to the requesting user, themessaging interface being used by the requesting to communicate with arecipient user accessible at the recipient device.

Aspect 29: The method of any of Aspects 27 to 28, wherein the userinterface button is provided by a media capture request service that isintegrated with the messaging interface.

Aspect 30: The method of any of Aspects 27 to 29, wherein the mediacapture service is part of a content management service, the methodcomprising: receiving the media capture object by the content managementservice; storing the media capture object by the content managementservice; and providing the link to access the media capture object inthe notification.

Aspect 31: The method of any of Aspects 27 to 30, wherein the messaginginterface is part of a customer assistance platform.

Aspect 32: The method of any of Aspects 27 to 31, wherein the messaginginterface is part of an issue tracking platform.

Aspect 33: The method of any of Aspects 27 to 32, wherein the messaginginterface is part of an educational platform.

Aspect 34: The method of any of Aspects 27 to 33, wherein the userinterface button displayed in a web interface.

Aspect 35: The method of any of Aspects 27 to 34, further comprising:receiving a configuration of options associated with the request for themedia capture.

Aspect 36: The method of any of Aspects 27 to 35, wherein theconfiguration of options includes a location to store the media captureobject, whether the media capture includes a screen capture and/or avideo capture, a length of the media capture.

Aspect 37: The method of any of Aspects 27 to 36, wherein theconfiguration of options includes a location in a content managementsystem where the media content object should be stored after the mediacapture by the recipient device.

Aspect 38: The method of any of Aspects 27 to 37, wherein theconfiguration of options includes configuring the link to access themedia capture object to be included into a workflow, whereby when themedia capture object is received, the workflow is triggered.

Aspect 39: The method of any of Aspects 27 to 38, wherein theconfiguration of options includes entering a name for the recording.

Aspect 40: The method of any of Aspects 27 to 39, wherein theconfiguration of options includes configuring a time to live (TTL) to beassociated the media capture object, whereby the media capture object isdeleted or becomes inaccessible to the requesting user after the TTLexpires.

Aspect 41: A method of receiving a request for a media capture from arequesting service, the method comprising: receiving the request for themedia capture by a recipient device of a recipient user, the request forthe media capture being to record content; presenting a start captureuser interface button that is presented in response to the receivedrequest for the media capture; receiving a selection of the startcapture user interface button; initiating the media capture by therecipient device after receiving the selection of the start capture userinterface button; terminating the media capture; and sending a mediacapture object including the media capture to the requesting service.

Aspect 42: The method of Aspect 41, wherein the sending a media captureobject including the media capture to the requesting service includessending the media capture object to the requesting user.

Aspect 43: The method of any of Aspects 41 to 42, wherein the requestfor the media capture includes options that were preconfigured by therequesting user.

Aspect 44: The method of any of Aspects 41 to 43, wherein the optionsinclude a requirement to have a camera on.

Aspect 45: The method of any of Aspects 41 to 44, wherein the optionsinclude a location to store the media capture object, whether the mediacapture includes a screen capture and/or a video capture, a length ofthe media capture.

Aspect 46: The method of any of Aspects 41 to 45, further comprising:storing the media capture object to a location in a content managementsystem.

Aspect 47: The method of any of Aspects 41 to 46, wherein the sendingthe media capture object including the media capture to the requestingservice includes sending a link to the media capture object at thelocation in the content management system.

Aspect 48: The method of any of Aspects 41 to 47, wherein the requestingservice is a service platform, wherein the recipient user interacts witha requesting user through the service platform as the requesting useraids in performing a service provided by the service platform.

Aspect 49: The method of any of Aspects 41 to 48, the method comprising:receiving a selection of media capture options prior to the receivingthe selection of the start capture user interface button.

Aspect 50: The method of any of Aspects 41 to 49, wherein the useroptions include a selection of a window or screen to capture, andwhether to turn on a camera or a microphone of the recipient device.

Aspect 51: The method of any of Aspects 41 to 50, the method comprising:receiving a selection of system permissions to permit a web interface tohave access to a camera or to screen capture a window.

Aspect 52: The method of any of Aspects 41 to 51, wherein the receivingthe request for the media capture by a recipient device occurs in a webinterface.

Aspect 53: The method of any of Aspects 41 to 52, wherein the requestfor the media capture is a link received in a messaging platform, thelink causing the recipient device to display the web interface with therequest for the media capture.

What is claimed is:
 1. A method for sending a request for a mediacapture by a remote capture service, the method comprising: receiving aselection of a user interface option within a requesting service, theuser interface option is for initiating the request for the mediacapture to a recipient device, the request for the media capture beingto record content by the recipient device, the user interface optionbeing provided by the remote capture service that is separate from therequesting service; presenting a user interface of the remote captureservice, to configure options at the remote capture service for therequest for the media capture, wherein the options define one or moreparameters for the media capture for the recipient device to perform themedia capture; sending the request for the media capture to therecipient device; and receiving a notification that a media captureobject has been received in response to the request for the mediacapture, the notification including a link to access the media captureobject.
 2. The method of claim 1, wherein the user interface option isincluded in a messaging interface presented to a requesting user, themessaging interface being used by the requesting user to communicatewith a recipient user at the recipient device.
 3. The method of claim 2,wherein the user interface option is provided by the remote captureservice that is integrated with the messaging interface.
 4. The methodof claim 3, wherein the remote capture service is part of a contentmanagement service, the remote capture service is configured to: receivethe media capture object by the content management service; store themedia capture object by the content management service; and provide thelink to access the media capture object in the notification.
 5. Themethod of claim 2, further comprising: receiving a request linkreferencing the request for the media capture, wherein the sending therequest for the media capture to the recipient device includes providingthe request link in the messaging interface.
 6. The method of claim 1,wherein the options include configuring a time-to-live (TTL) to beassociated with the media capture object, whereby the media captureobject is deleted or becomes inaccessible to the requesting user afterthe TTL expires.
 7. The method of claim 1, wherein the options includeconfiguring the recipient device to initiate streaming of the mediacapture in conformance with the one or more parameters after the mediacapture begins.
 8. The method of claim 1, wherein the link includes anembedded token identifying attributes of the request for the mediacapture, the identifying attribute including an identification of acommunication thread in which the notification and the link wasincluded.
 9. The method of claim 1, further comprising: transmittingcommands to be performed by the recipient device, wherein the commandsare interpretable by a browser on the recipient device that is effectivein causing the recipient device to initiate the media capture.
 10. Asystem comprising: one or more processors; and at least onecomputer-readable storage medium having stored therein instructionswhich, when executed by the one or more processors, cause the system to:receive a selection of a user interface option within a requestingservice, the user interface option is for initiating a request for amedia capture to a recipient device, the request for the media capturebeing to record content by the recipient device, the user interfaceoption being provided by a remote capture service that is separate fromthe requesting service; present a user interface of the remote captureservice to configure options at the remote capture service for therequest for the media capture, wherein the options define one or moreparameters for the media capture for the recipient device to perform themedia capture; send the request for the media capture to the recipientdevice; and receive a notification that a media capture object has beenreceived in response to the request for the media capture, thenotification including a link to access the media capture object. 11.The system of claim 10, wherein the user interface option is included ina messaging interface presented to a requesting user, the messaginginterface being used by the requesting user to communicate with arecipient user at the recipient device.
 12. The system of claim 11,wherein the user interface option is provided by the remote captureservice that is integrated with the messaging interface.
 13. The systemof claim 12, wherein the remote capture service is part of a contentmanagement service, the remote capture service is configured to: receivethe media capture object by the content management service; store themedia capture object by the content management service; and provide thelink to access the media capture object in the notification.
 14. Thesystem of claim 11, further comprising: receiving a request linkreferencing the request for the media capture, wherein the sending therequest for the media capture to the recipient device includes providingthe link in the messaging interface.
 15. The system of claim 10, whereinthe options include configuring a time-to-live (TTL) to be associatedwith the media capture object, whereby the media capture object isdeleted or becomes inaccessible to the requesting user after the TTLexpires.
 16. The system of claim 10, wherein the options includeconfiguring the recipient device to initiate streaming of the mediacapture in conformance with the one or more parameters after the mediacapture begins.
 17. The system of claim 10, wherein the link includes anembedded token identifying attributes of the request for the mediacapture, the identifying attribute including an identification of acommunication thread in which the notification and the link wasincluded.
 18. The system of claim 10, further comprising: transmittingcommands to be performed by the recipient device, wherein the commandsare interpretable by a browser on the recipient device that is effectivein causing the recipient device to initiate the media capture.
 19. Anon-transitory computer-readable medium comprising: instructions storedtherein which, when executed by one or more processors, cause the one ormore processors to: receive a selection of a user interface optionwithin a requesting service, the user interface option is for initiatinga request for a media capture to a recipient device, the request for themedia capture being to record content by the recipient device, the userinterface option being provided by a remote capture service that isseparate from the requesting service; present a user interface of theremote capture service to configure options at the remote captureservice for the request for the media capture, wherein the optionsdefine one or more parameters for the media capture for the recipientdevice to perform the media capture; send the request for the mediacapture to the recipient device; and receive a notification that a mediacapture object has been received in response to the request for themedia capture, the notification including a link to access the mediacapture object.
 20. The non-transitory computer-readable medium of claim19, further comprising: receiving a request link referencing the requestfor the media capture, wherein the sending the request for the mediacapture to the recipient device includes providing the link in amessaging interface.